package br.com.diego.system.controller.cadastrocomponente;

import br.com.diego.system.entity.componente.Componente;
import br.com.diego.system.manager.componente.ComponenteManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;

public class CadastroComponenteBuilder {

    @Autowired
    private ComponenteManager componenteManager;
    
    @Autowired
    private CadastroComponenteFactory cadastroComponenteFactory;
    
    private Componente componente;

    public void buildSalvar(CadastroComponenteVo cadastroComponenteVo) {
        Assert.notNull(cadastroComponenteVo, "Não foi possível recuperar os dados da tela.");
        Assert.hasText(cadastroComponenteVo.getComponenteVo().getNome(), "Nome é um campo obrigatório.");        
        componente = new Componente();
        
        if (cadastroComponenteVo.getComponenteVo().getId() != null) {
            componente = componenteManager.buscarPeloId(cadastroComponenteVo.getComponenteVo().getId());
            Assert.notNull(componente.getId(), "Usuário não encontrado no banco de dados.");
            componente.setVersion(cadastroComponenteVo.getComponenteVo().getVersion());           
        }
             
        componente.setNome(cadastroComponenteVo.getComponenteVo().getNome());        
        Assert.isNull(componenteManager.verificaNomeUnico(componente), "E-mail inválido.");        
        componenteManager.salvar(componente);
    }

    public void buildDeletar(ComponenteVo componenteVo) {
        Assert.notNull(componenteVo.getId(), "Componente não encontrado.");
        componente = new Componente();
        componente = componenteManager.buscarPeloId(componenteVo.getId());
        Assert.notNull(componente.getId(), "Componente não pertence a base de dados.");
        componenteManager.deletar(componente);
    }
}
